#ifndef _THREAD_H_
#define _THREAD_H_

#include <pthread.h>
// Thread 抽象类的声明
class Thread
{
public:
	Thread();
	//注意这里的 纯虚 析构函数：通常只有作为多态的基类，纯虚 析构函数 是必要的
	virtual ~Thread();

	void Start();
	void Join();

	void SetAutoDelete(bool autoDelete);

private:
	// 这里为什么实现一个静态的 ThreadRoutine 方法是值得我们思考的
	static void* ThreadRoutine(void* arg);
	virtual void Run() = 0;
	// pthread_t 中 p 为 POSIX 便携式操作系统接口，t 为 type 的含义
	pthread_t threadId_;
	bool autoDelete_;
};

#endif // _THREAD_H_
